package com.enba.mallapi.module.auth.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.enba.boot.core.utils.TreeNode;
import com.enba.mallapi.module.auth.controller.req.MenuAddUpdateReq;
import com.enba.mallapi.module.auth.entity.Menu;
import java.util.List;

/**
 * 菜单表 服务类
 *
 * @author 恩爸编程
 * @since 2025-02-28
 */
public interface IMenuService extends IService<Menu> {

  /**
   * 用户菜单列表
   *
   * @param userId
   * @return
   */
  List<TreeNode> getUserMenu(Long userId);

  /**
   * 获取所有菜单
   *
   * @return
   */
  List<TreeNode> getAllMenu();

  /**
   * 获取所有菜单，树形表格结构返回
   *
   * @return
   */
  List<TreeNode> getAllTreeTableMenu();

  /**
   * 新增或更新
   *
   * @param menu
   * @return
   */
  boolean saveOrUpdate(MenuAddUpdateReq menu);

  /**
   * 角色列表-分配权限（反显指定角色拥有的菜单权限）
   *
   * @param roleId 角色id
   * @return 菜单列表
   */
  List<TreeNode> getRoleAllMenuIdSet(Long roleId);
}
